package com.gao.d_selector.a;

/**
 * @author gao
 * @time 2020/06/27 10:59:55
 * bio 示例 代码略
 * 1. bio的核心是“一个线程只能对应一个socket”，最开始对这句话很不理解，线程中创建多个socket不行吗？
 * 2. 由于socket是阻塞的，所以在一个线程中如果有多个socket，则前面的socket如果是阻塞的，后面的socket无论是否有数据都得不到处理！
 * 3。还有一个缺点就是：资源要求太高，系统中创建线程是需要比较高的系统资源的，如果连接数太高，系统无法承受，而且，线程的反复创建-销毁也需要代价。
 * 4. 线程池本身可以缓解线程创建-销毁的代价，这样优化确实会好很多，但是当IO操作比较耗时，线程不能及时被归还到池中的话，是很影响系统的吞吐量的。
 *
 * =================下面的这一点暂时可以不看，等学习到了f包的时候再结合上下文一起看也不迟=============================================
 * 5，另外，无论使用单独的线程还是线程池，每一个线程把一次交互的事情全部做了，包括连接、读取和返回，应该把一次连接的操作分为更细的粒度或者过程，
 *    这些更细的粒度是更小的线程。整个线程池的数目会翻倍，但是线程更简单，任务更加单一。这其实就是Reactor出现的原因。（后续讲解reactor）
 */
public class Server {

}
